<?php

namespace app\admin\model;

use app\admin\model\language\Keywords;
use app\logic\language\LangLogic;
use think\Model;

/**
 * Language
 */
class Language extends Model
{
    // 表名
    protected $name = 'language';

    // 自动写入时间戳字段
    protected $autoWriteTimestamp = true;


    /**
     * 在插入操作之后执行的方法
     *
     */
    protected static function onAfterInsert($model): void
    {
        if ($model->weight == 0) {
            $pk = $model->getPk();
            if (strlen($model[$pk]) >= 19) {
                $model->where($pk, $model[$pk])->update(['weight' => $model->count()]);
            } else {
                $model->where($pk, $model[$pk])->update(['weight' => $model[$pk]]);
            }
        }
        //同步到翻译表
        LangLogic::syncTranslate();
    }

    /**
     * 获取语言列表
     *
     * 本函数通过查询状态为1的语言记录来获取可用的语言列表
     * 选择状态为1的记录是因为这通常表示这些语言是激活或可用的
     *
     * @return \think\Collection|array 语言列表查询结果，具体类型取决于数据库查询的结果
     * @throws \think\db\exception\DataNotFoundException
     * @throws \think\db\exception\DbException
     * @throws \think\db\exception\ModelNotFoundException
     */
    public function getLangList(): \think\Collection|array
    {
        // 查询状态为1的语言记录，以获取当前可用的语言列表
        return $this->where('status', '=', 1)
            ->field('id,zh_name, name')
            ->order('weight desc')
            ->select()->toArray();
    }
}